package com.itheima.file;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

public class FileDemo05 {
    public static void main(String[] args) throws IOException {
        File file = new File("day11_IO");
        HashMap<String,Integer> hm = new HashMap<>();
        getcount(file,hm);
        System.out.println(hm);

    }

    private static void getcount(File file,HashMap<String,Integer> hm) {
        //1. 进入这个路径的文件夹
        File[] files = file.listFiles();
        //2.遍历
        for (File path : files) {
            //判断是文件还是文件夹
            if (path.isFile()){
                //获取文件路径的文件名
                String fileName = path.getName();
               // System.out.println(fileName);
                //以 . 为分隔成数组
                String[] split = fileName.split("\\.");
                //判断长度是否为2，如果是2，前面就是文件名，后面就是文件类型
                if (split.length == 2){
                    String key = split[1];
                    //判断当前集合中是否有该文件名为key的值
                    if (hm.containsKey(key)){
                        //如果有，就将其值+1，再重新添加一次
                        Integer count = hm.get(key);
                        //map的赋值，key相同的话会覆盖掉旧的值
                        hm.put(key,++count);
                    }else {
                        //如果没有，那么表示该文件类型是第一次出现，
                        //就存进去集合，初始值为1
                        hm.put(key,1);
                    }
                }
            }else {
                //是文件夹的话，就递归调用
                getcount(path,hm);
            }
        }
    }

}
//字符串中存在  .  和   |   的时候，
// 不能直接用String.split(".")进行分隔，
// 而是String.split("\\ .")或者String.split("\\ |");
//因为直接写的话系统是无法识别的，需要通过转义符
